package com.panshi.controller.website;

import com.panshi.api.IConfigApi;
import com.panshi.po.ConfigPO;
import com.panshi.po.LinksPO;
import com.panshi.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@Slf4j
public class ConfigController {

    @Autowired
    IConfigApi iConfigApi;

    //进入页面
    @GetMapping("config/query")
    public String query() {
        return "config/config-query";
    }

    @PostMapping("configQuery")
    @ResponseBody
    public PageModel<ConfigPO> query(PageModel<ConfigPO> pm) {

        log.info("友链查询======{}", "*****************");

        pm.init();

        PageBeanConfigVo pageBeanConfigVo = new PageBeanConfigVo();

        pageBeanConfigVo.setCurrentPage(pm.getCurrentPage());

        pageBeanConfigVo.setPageSize(pm.getPageSize());

        log.info("友链分页pageBeanVo============={}",pageBeanConfigVo);

        log.info("PageBeanVo================={}", pageBeanConfigVo);

        List<ConfigPO> linksPOS = iConfigApi.queryConfigPostBody(pageBeanConfigVo).getData();

        Integer str=iConfigApi.queryNumberConfigPostBody().getData();

        log.info("查询出来的数据====={}", linksPOS);

        pm.setList(linksPOS);

        pm.setCount(str);

        return pm;

    }

    //模糊查询
    @PostMapping("configDimQuery/{vague}")
    @ResponseBody
    public PageModel<ConfigPO> dimQuery(PageModel<ConfigPO> pm, @PathVariable String  vague){

        pm.init();

        log.info("模糊查询前端传来的数据============={}",vague);

        QueryDimConfigVO queryDimConfigVO=new QueryDimConfigVO();

        queryDimConfigVO.setTitle(vague);

        queryDimConfigVO.setCurrentPage(pm.getCurrentPage());

        queryDimConfigVO.setPageSize(pm.getPageSize());

        List<ConfigPO> list=iConfigApi.queryDimConfigPostBody(queryDimConfigVO).getData();

        log.info("友情链接模糊查询出来的数据==============={}",list);

        Integer str=iConfigApi.queryDimNumberConfigPostBody(vague).getData();

        log.info("查询出来的条数============{}",str);

        pm.setList(list);

        pm.setCount(str);

        return pm;

    }

    @GetMapping("configAdd")
    public String configAdd() {
        return "config/config-add";
    }

    @PostMapping("configAdd")
    @ResponseBody
    public PageModel add(AddConfigVO addConfigVO) {

        log.info("前端传来的数据======{}", addConfigVO);

        PageModel pageModel = new PageModel();

        addConfigVO.setCreatedate(new Date());

        ResponseVO str = iConfigApi.addConfigPostBody(addConfigVO);

        Integer option= (Integer) str.getData();

        log.info("添加的返回来的参数==========={}",str);

        if (option == 1) {

            pageModel.setCode(10000);

            pageModel.setMsg(str.getMsg());

        } else if (option == 0) {

            pageModel.setCode(9999);

            pageModel.setMsg(str.getMsg());

        }
        return pageModel;
    }

    //编辑页面
    @GetMapping("config-edit")
    public String edit(@RequestParam Integer id, Model model){
        log.info("编辑id==================={}",id);

        ConfigPO configPO=iConfigApi.queryIdConfigPostBody(id).getData();

        log.info("通过id查询出来的数据============{}",configPO);

        model.addAttribute("configPO",configPO);

        return "config/config-edit";
    }

    //编辑修改
    @PostMapping("config-edit")
    @ResponseBody
    public Map<String,Object> edit(UpdateConfigVO updateConfigVO){

        log.info("修改前端传来的植====={}",updateConfigVO);

        Map<String,Object> map = new HashMap<>();

        updateConfigVO.setUpdatedate(new Date());

        ResponseVO str=iConfigApi.updateConfigPostBody(updateConfigVO);

        Integer option= (Integer) str.getData();

        log.info("option=============={}",option);

        log.info("修改返回来的数据============={}",str);

        if(option==0){

            map.put("success",false);

            map.put("message",str.getMsg());

        }else if(option==1){

            map.put("success",true);

            map.put("message",str.getMsg());
        }

        return  map;

    }

    //删除方法
    @PostMapping("config-del")
    @ResponseBody
    public Map<String,Object> del(DeleteConfigVO deleteConfigVO){

        log.info("删除传来的数据========{}",deleteConfigVO);

        Map<String,Object> map = new HashMap<>();

        deleteConfigVO.setUpdatedate(new Date());

        Integer state = iConfigApi.deleteConfigPostBody(deleteConfigVO).getData();

        if(state == 0){
            map.put("success",false);
            map.put("message","删除失败");
        }else if(state == 1){
            map.put("success",true);
            map.put("message","删除成功");
        }
        return map;

    }


}
